iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
自我挑戰組

菜雞的JAVA日記系列 第 21

DAY21-JAVA的多重繼承

  • 分享至 

  • xImage
  •  

多重繼承
有時候我們會希望子類別可以繼承兩個以上的父類別,以便使用每一個父類別的功能,但JAVA並不允許多個父類別繼承。理由很簡單,因為JAVA的設計是以簡潔為導向,而利用類別的多重繼承將使得問題複雜化。但藉由介面的機制,多重繼承的處理還是可以實現,就是透過類別來實作兩個以上的介面!
類別裡的函數只要明確定義每一個介面裡的函數,便可達到多重繼承的目的。

class 類別名稱 implements 介面1,介面2,...{
...
}

interface Shape{  //定義Shape介面
    final double PI = 3.14;
}
interface Color{
    abstract void setColor(String str);  //定義Color介面
}
class Circle implements Shape,Color{  //實作Shape與Color介面
    double radius;
    String color;
    
    public Circle(double r){  
        radius = r;
    }
    public void setColor(String str){  //定義Color介面裡的setColor()
        color = str;
        System.out.println("color= "+color);
    }
     public void area(){  //定義Shape介面裡的area()函數
        System.out.println("area= "+PI*radius*radius);
     }
    public class Test{
        public static void main(String args[]){
            Circle cir;
            cir = new Circle(2.0);
            cir.setColor("Blue");
            cir.area();
        }
}

介面的延伸
介面與一般的類別一樣,可透過繼承的技術來衍生出新的介面。原來的介面稱為基底介面(base interface)或父介面(super interface),衍生出的介面稱為衍生介面(derived interface)或子介面(sub interface)。透過這種機制,衍生介面不僅可以保有父介面的成員,同時也可以加入新的成員以因應實際的問題所需。
介面的繼承也是透過關鍵字extends。

interface 子介面名稱 extends 父介面名稱1,父介面名稱2,...{
...
}

類別關係的判別-instanceof
instanceof運算子是用來測試物件是否與某個類別(class)或是介面(interface)有繼承關係,回傳值為布林值。

object instanceof ClassName

傳回值為true,表示物件object是ClassName的類別或其子類別之物件;傳回值為false,表示物件object與該類別及其子類別無關連。

在使用instanceof運算子時,物件與類別間要有繼承的關係,否則編譯時會有「inconvertible types」的錯誤訊息。

耶!!!進入倒數啦啦啦啦啦啦~~
本來早上就要打文,結果網站掛掉...
See U tomorrow~

菜鳥工程師的體脂肪

菜鳥工程師也有分享食記,歡迎大家追蹤喔~~
https://instagram.com/engineer_bodyfat?utm_medium=copy_link


上一篇
DAY20-JAVA的介面
下一篇
DAY22-JAVA的package
系列文
菜雞的JAVA日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言